package com.ruoyi.network;

public enum CommandType {

    /**
     * 心跳
     */
    BEAT_HEART(0x02),

    /**
     * 查询系统数据
     */
    QUERY_SYSTEM_DATA(0x11),

    /**
     * 查询温度
     */
    QUERY_TEMPERATURE(0x12),
    /**
     * 查询湿度
     */
    QUERY_HUMIDITY(0x13),
    /**
     * 查询光强
     */
    QUERY_LIGHT_INTENSITY(0x14),
    /**
     * 查询工作状态
     */
    QUERY_WORK_STATUS(0x15),

    /**
     * 查询RTC时间
     */
    QUERY_RTC(0X16),
    /**
     * 控制风扇
     */
    CONTROL_FAN(0X21),

    /**
     * 控制水泵
     */
    CONTROL_PUMP(0X22),

    /**
     * 控制卷帘
     */
    CONTROL_ROLLER_SHUTTER(0x23),
    /**
     * 控制灯光
     */
    CONTROL_LIGHT(0x24),
    /**
     * 语音播报
     */
    CONTROL_SOUND(0x25),
    /**
     * 设置时间
     */
    SETTING_RTC(0x31),
    /**
     * 控制心跳模式
     */
    SETTING_HEAT_BEAT_MODE(0x32),
    /**
     * 重启
     */
    SETTING_REBOOT(0x33),
    /**
     * 硬件启动
     */
    HARDWARE_BOOT(0x01),

    ;

    private final int value;

    // 构造器默认也只能是private, 从而保证构造函数只能在内部使用
    private CommandType(int value) {
        this.value = value;
    }

    public int getCommandValue() {
        return value;
    }

    public static CommandType valueOf(int value) {
        switch (value) {
            case 0x01:
                return CommandType.HARDWARE_BOOT;
            case 0x02:
                return CommandType.BEAT_HEART;
            case 0x11:
                return CommandType.QUERY_SYSTEM_DATA;
            case 0x12:
                return CommandType.QUERY_TEMPERATURE;
            case 0x13:
                return CommandType.QUERY_HUMIDITY;
            case 0x14:
                return CommandType.QUERY_LIGHT_INTENSITY;
            case 0x15:
                return CommandType.QUERY_WORK_STATUS;
            case 0x16:
                return CommandType.QUERY_RTC;
            case 0x21:
                return CommandType.CONTROL_FAN;
            case 0x22:
                return CommandType.CONTROL_PUMP;
            case 0x23:
                return CommandType.CONTROL_ROLLER_SHUTTER;
            case 0x24:
                return CommandType.CONTROL_LIGHT;
            case 0x25:
                return CommandType.CONTROL_SOUND;
            case 0x31:
                return CommandType.SETTING_RTC;
            case 0x32:
                return CommandType.SETTING_HEAT_BEAT_MODE;
            case 0x33:
                return CommandType.SETTING_REBOOT;
            default:
                return null;
        }
    }

}
